<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    var obj = {
      name: 'qiutc',
      foo: function () {
        console.log(this);
      },
      foo2: function () {
        let _this = this
        console.log(this);
        setTimeout(this.foo, 1000);
        // 这里定时器中的this.foo还是obj的，只是打印出来的this是window
        // 等效于👇
        setTimeout(function () {
          console.log(this);  // window

        }, 1000);
        // 解决方法：箭头函数  会使this指向obj
        setTimeout(() => {
          console.log(this);  // obj
        }, 1000);
        // 闭包 this重命名
        setTimeout(function () {
          console.log(_this);  // obj

        }, 1000);
      }
    }
    obj.foo2();
  </script>
</body>

</html>